/******************************************************************************
 ** 公司名称：天津柯迪斯科技有限公司
 ** 版权信息：
 ** 文件名称： bsp_i2c_gpio.h
 ** 模块名称： GPIO模拟I2C总线通用模块
 ** 版 本 号： V1.0
 ** 作    者： PLAY
 ** 备    注： 在访问I2C设备前，请先调用 bsp_InitI2C 函数配置GPIO
 ** 修改记录： 版本     修改人      时间         修改内容
 **
 ******************************************************************************/
#ifndef _BSP_I2C_GPIO_H
#define _BSP_I2C_GPIO_H
/******************************************************************************
 * 头文件
 ******************************************************************************/
#include "main.h"


/******************************************************************************
 * 宏定义 ('#define')                             
 ******************************************************************************/
#define I2C_WR	0		/* 写控制bit */
#define I2C_RD	1		/* 读控制bit */

 /* 定义读写SCL和SDA的宏 */
#define I2C_SCL_1()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET)				/* SCL = 1 */
#define I2C_SCL_0()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET)			/* SCL = 0 */

#define I2C_SDA_1()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET)				/* SDA = 1 */
#define I2C_SDA_0()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET)				/* SDA = 0 */

#define I2C_SDA_READ()  HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14)		/* 读SDA口线状态 */
#define I2C_SCL_READ()  HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_13)		/* 读SCL口线状态 */
 /******************************************************************************
 * 类型定义 ('typedef')                                         
 ******************************************************************************/
 
/******************************************************************************
 * 全局变量声明 
 ******************************************************************************/
 
/******************************************************************************
 * 函数声明 
 ******************************************************************************/


void i2c_Start(void);
void i2c_Stop(void);
void i2c_SendByte(uint8_t _ucByte);
uint8_t i2c_ReadByte(void);
uint8_t i2c_WaitAck(void);
void i2c_Ack(void);
void i2c_NAck(void);
void i2c_Delay(void);
uint8_t i2c_CheckDevice(uint8_t _Address);

#endif
